#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
typedef struct
{
    int r[20];
    int length;
}SqList;
void ShellInsert(SqList &L,int d)
{
    int i,j;
    for(i=d+1;i<=L.length;i++)
    {
        if(L.r[i-d]>L.r[i])
        {
            L.r[0]=L.r[i];
            for(j=i-d;j>0&&L.r[j]>L.r[0];j=j-d)
            L.r[j+d]=L.r[j];
            L.r[j+d]=L.r[0];
        }
    }
}
int main()
{
    int n,i,j,k,*a;
    scanf("%d",&n);
    SqList L;
    L.length=n;
    a=new int[n];
    j=0;
    i=n/2;
    while(i>0)
    {
        a[j++]=i;
        i=i/2;
    }
    for(i=1;i<=L.length;i++)
        scanf("%d",&L.r[i]);
    for(i=0;i<j;i++)
    {
        ShellInsert(L,a[i]);
        for(k=1;k<=L.length;k++)
        {
            printf("%d ",L.r[k]);
        }
        printf("\n");
    }
    return 0;
}
